using Mirror; // 引入Mirror命名空间
using UnityEngine;
using UnityEngine.UI;

public class createplayer : NetworkManager // 继承NetworkManager类
{
    public InputField myname; // 输入玩家名称的InputField

    // 在服务器启动时调用
    public override void OnStartServer()
    {
        base.OnStartServer();

        // 注册CreateMMOCharacterMessage消息的处理方法
        NetworkServer.RegisterHandler<CreateMMOCharacterMessage>(OnCreateCharacter);
    }

    // CreateMMOCharacterMessage消息结构体
    public struct CreateMMOCharacterMessage : NetworkMessage
    {
        public string playername; // 玩家名称
    }

    // 在客户端连接到服务器时调用
    public override void OnClientConnect()
    {
        base.OnClientConnect();

        // 在这里发送消息，或者您想要的任何其他地方
        CreateMMOCharacterMessage characterMessage = new CreateMMOCharacterMessage
        {
            // playername = myname.text // 设置玩家名称为InputField中的文本
            playername = "测试" // 设置玩家名称为InputField中的文本
        };

        NetworkClient.Send(characterMessage); // 发送消息给服务器
    }

    // 创建角色的方法，在收到CreateMMOCharacterMessage消息时调用
    // 参数conn：与服务器的连接；参数message：接收到的消息
    void OnCreateCharacter(NetworkConnectionToClient conn, CreateMMOCharacterMessage message)
    {
        // PlayerPrefab是在Network Manager的Inspector中指定的，
        // 但您可以在每个比赛中使用不同的预制体，例如：
        // GameObject gameobject = Instantiate(playerPrefab); // 实例化玩家预制体

        // 根据游戏的需要，应用消息中的数据
        // PlayerControl player = gameobject.GetComponent<PlayerControl>();
        // player.playerName = message.playername; // 将玩家名称赋值给Playercode组件中的playername变量

        // 将此游戏对象添加为连接上的玩家的控制对象
        // NetworkServer.AddPlayerForConnection(conn, gameobject);
    }
}
